home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / gcc / ixml020s.lha / Sys / libs / important.readme next >
Text File  |  1996-03-26  |  2KB  |  36 lines

  1. Attention:
  2.  
  3. Starting with ixemul.library version 42.0 the ssystem() function is no longer
  4. supported. The only application that uses this function (to my knowledge)
  5. is 'gcc'. Using 'gcc' with the current library will put up a requester telling
  6. you that ssystem() is no longer available.
  7.  
  8. Fortunately, every gcc-distribution also contained a gccv executable.
  9. Delete your 'gcc' executable and rename 'gccv' to 'gcc'. This version is
  10. completely identical to 'gcc', but it doesn't use ssystem(). Better, this
  11. version supports the -pipe option.
  12.  
  13. Future gcc-versions (hopefully starting from version 2.7.2) will no longer
  14. make use of the ssystem() function, and the separate 'gccv' executable will
  15. disappear.
  16.  
  17. Why was ssystem() removed? This function was a precursor to the standard Unix
  18. vfork()/execve() function pair. Both spawn a new process (for example,
  19. 'gcc' starts 'cpp', followed by 'cc1', followed by 'as'), but the
  20. vfork()/execve() method integrates seamlessly with the ixemul.library (to
  21. be more specific, the new process is within the same process group), while
  22. ssystem() uses the Amiga kernel function RunCommand(), which runs the new
  23. process outside the parent's process group. Usually this is no problem, but
  24. once you break a make-run using Ctrl-C, the library kills all processes
  25. within the same process group. Because ssystem() puts the new process outside
  26. the current process group, this will lead to a situation where the parent
  27. has been killed, but the child (the new process created with RunCommand) lives
  28. on. Once the child dies, it is without a parent, which most probably leads to a
  29. crash.
  30.  
  31. Due to the fact that 1) hardly anyone knew about this function, and 2) it
  32. is a dangerous function to use since vfork()/execve() does a much better
  33. job, I have decided to remove it from the library.
  34.  
  35.                 Hans Verkuil (hans@wyst.hobby.nl)
  36.